package praca.gra;

import praca.framework.TextureGL;
import praca.framework.Vertices;
import praca.interfejsy.Game;
import praca.interfejsy.Screen;
import praca.interfejsy.Texture;
import praca.interfejsy.TouchEvent;
import android.util.Log;

public class Ex03Moving extends Screen{

	Vertices trollVert = new Vertices(100,100,true);
	Vertices rectVert = new Vertices(100,200,false);
	Texture troll;
	TouchEvent ev;
	boolean isTouched = false;
	
	float trollX = 250;
	float trollY = 150;
	
	
	public Ex03Moving(Game game) {
		super(game);
		
		
	}

	@Override
	public void update(float deltaTime) {
		/*
		 Na przykladzie poprzedniego ekranu
		 */
		/* POBIERANIE ZDARZEN Z EKRANU 
		 * Sprawdzamy czy sa jakies zdarzenia
		 * jesli sa to pobieramy pierwsze z nich
		 * 
		 * ZAWSZE FUNKCJA REMOVE!!!!!!!!!!!!
		 * 
		 * nastepnie sprawdzamy jego typ
		 */
		if(!in.getTouchEvents().isEmpty()){

			ev = in.getTouchEvents().remove(0);
				
			if(ev.getType() == TouchEvent.TOUCH_DOWN){
				if(czyDotknieto(ev.getX(), ev.getY())){
					//funkcja sprawdzajaca czy dotyk znajduje sie wewnatrz trolla
					isTouched = true;
				}
			}
			
			if(ev.getType() == TouchEvent.TOUCH_MOVE){//przenoszenie
				if(isTouched){//jak jest dotkniety to go przenosimy razem z dotykiem
					trollX = ev.getX();
					trollY = ev.getY();
				}
			}
			
			if(ev.getType() == TouchEvent.TOUCH_UP){//przenoszenie
				if(isTouched){//jak jest dotkniety to go przenosimy razem z dotykiem
					trollX = ev.getX();
					trollY = ev.getY();
					isTouched=false;
				}
			}
			
		}
		
		
		g.drawColor(0, 1, 0.4f); //rysujemy zielone tlo
		
		
		
		g.clearTransformations(); 
		g.moveTexture(100, 100);
		g.drawRect(rectVert);
		
		g.clearTransformations(); //rysujemy co innego wiec czyscimy przeniesienie
		
		g.moveTexture(trollX, trollY); //uzywamy zmiennych
		//g.rotateTexture(90);
		
		g.drawTexture(troll, trollVert);;
		
		
	}

	@Override
	public void pause() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void resume() {
		/*
		 * Tekstury nalezy wczytywac w metodzie resume poniewaz po kazdym zablokowaniu telefonu
		 * itp zostaja one wyrzucone z pamieci
		 * korzystamy z obiektu TextureGL
		 */
		
		troll = new TextureGL(game, "troll.png" );//nazwa pliku graficznego w katalogu ASSETS
		g.setTextureTransparentBackground(); //tlo KAZDEJ tekstury bedzie prezroczyste
		
	}

	@Override
	public void dispose() {
		// TODO Auto-generated method stub
		
	}
	
	public boolean czyDotknieto(float x, float y){
		/*
		 * Prosta matematyka. Punkt polozenia to srodek obrazka
		 * ma on 100 szerokosci i 100 wysokosci
		 */
		Log.d("velocity", "Test: x="+x+" ,y="+y);//Uzycie LogCat!!
		
		if(x < trollX+50 && x > trollX-50 && y > trollY-50 && y < trollY+50)
			return true;
		
		return false;
	}

}
